/**
 * 
 */
package com.myworld.distributedLock;

/**
 * 分布式锁工具
 */
public interface DistributedLockHandler { 
    /** 
     * 尝试获取分布式锁 <br>
     * 锁的超时时间、尝试频率等使用默认配置
     * @param lock 锁的名称 
     * @return true 获取成功，false获取失败 
     */  
    public boolean tryLock(DistributedLock lock) ;
  
    /** 
     * 尝试获取分布式锁 
     * @param lock    锁的名称 
     * @param timeout 获取超时时间 单位ms 
     * @return true 获取成功，false获取失败 
     */  
    public boolean tryLock(DistributedLock lock, long timeout);
  
    /** 
     * 尝试获取分布式锁 
     * @param lock        锁的名称 
     * @param timeout     获取锁的超时时间 
     * @param tryInterval 多少毫秒尝试获取一次 
     * @return true 获取成功，false获取失败 
     */  
    public boolean tryLock(DistributedLock lock, long timeout, long tryInterval);
    /** 
     * 尝试获取分布式锁 
     * @param lock           锁的名称 
     * @param timeout        获取锁的超时时间 
     * @param tryInterval    多少毫秒尝试获取一次 
     * @param lockExpireTime 锁的过期 
     * @return true 获取成功，false获取失败 
     */  
    public boolean tryLock(DistributedLock lock, long timeout, long tryInterval, long lockExpireTime);
    /**
     * 释放分布式锁 
     * @param lock 锁对象
     */
    public void releaseLock(DistributedLock lock);
  
}

